<?php

/**
 * Class Response
 * 使用xml数据格式提供接口数据
 */

class Response{
	
	public static function xml() {
		header("Content-Type: text/xml");
		$xml = "<?xml version='1.0' encoding='UTF-8'?>\n";
		$xml .= "<root>\n";
		$xml .= "<code>200</code>\n";
		$xml .= "</root>";
		
		echo $xml;
	}
	
	/**
	* 按xml方式输出通信数据
	* @param integer $code 状态码
	* @param string $message 提示信息
	* @param array @data 数据
	* return string
	*/
	public static function xmlEncode($code, $msg='', $data=[]) {
		if(!is_numeric($code)){
			return '';
		}
		$result = array(
			'code' => $code,
			'msg' => $msg,
			'data' => $data
		);

        header("Content-Type: text/xml");
        $xml = "";
        $xml .= "<?xml version='1.0' encoding='UTF-8'?>\n";
		$xml .= "<root>";
		$xml .= self::xmlToEncode($result);
		$xml .= "</root>\n";
		
		echo $xml;
	}

	public static function xmlToEncode($data){
		$xml = $attr = "";
		foreach($data as $key=>$value) {
		    if (is_numeric($key)) {
                $attr = " id='{$key}' ";
                $key = "item";
            }
			$xml .= "<$key$attr>";
			$xml .= is_array($value) ? self::xmlToEncode($value) : $value;
			$xml .= "</$key>\n";
		}

		return $xml;
	}
}

$data = [
    'id'=>1,
    'user'=>'zhang',
    'code'=>[1,2,3,4,5]
];

Response::xmlEncode(200, 'msg', $data);

